/**
 * BinaryTree.java
 * Descripción: Interfaz para un árbol binario.
 * Inspirado en la clase BinaryTree del libro JavaStructures de Duane Bailey, 2007 (C).
 * @author Oscar Castañeda 11086
 * @since 11/09/2012
 * @version 1.0
 */

public interface BinaryTree<E> {
    
    /**
     * @pre Se tiene un árbol binario.
     * @post Se obtiene el hijo izquierdo de este árbol. Si es una hoja, se obtiene null.
     */
    public BinaryTree<E> getLeft();
    
    /**
     * @pre Se tiene un árbol binario.
     * @post Se obtiene el hijo derecho de este árbol. Si es una hoja, se obtiene null.
     */
    public BinaryTree<E> getRight();
    
    /**
     * @pre Se tiene un árbol binario.
     * @post Se devuelve el valor que contiene este nodo.
     */
    public E getValue();
    
    /**
     * @pre Se tiene un árbol binario.
     * @post Se coloca como hijo izquierdo de este árbol al árbol pasado como parámetro.
     */
    public void setLeft(BinaryTree<E> newLeft);
    
    /**
     * @pre Se tiene un árbol binario.
     * @post Se coloca como hijo derecho de este árbol al árbol pasado como parámetro.
     */
    public void setRight(BinaryTree<E> newRight);
    
}
